perm filename ENVSUB.F4[LCS,MUS] blob
sn#063094 filedate 1973-09-18 generic text, type T, neo UTF8
00100 C SCORE SUBROUTINE TO REPLACE THE LINEN UNIT GENERATOR.
00200
00300 SUBROUTINE SUBR
00400 COMMON /INS/ INST(27),BG(60)
00500 COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF
00600
00700 IF(IPAR.EQ.13)GO TO 1
00800 PX9=P(9)
00900 C SAVE THE DUR. OF TRPT'S ENV.
01000 RETURN
01100
01200 1 X=PX9
01300 IF(X.GT.10)GO TO 11
01400 P(4)=0
01500 P(7)=3/P(2)
01600 C THE RISE TIME(IN SEG STEPS) OF ATTACK PORTION.
01700 P(9)=7/P(2)
01800 C THE DECAY OF ATTACK PEAK.
01900 IF(X.EQ.10)GO TO 10
02000 22 P(11)=100-10/P(2)
02100 C THE FINAL DECAY. - AFTER THE STEADY STATE PORTION.
02200 C SO THAT STEPS DON'T GO BACKWARDS
02300 P(12)=0
02400 23 IF(P(11).LT.P(9))P(11)=P(9)
02500 RETURN
02600
02700 10 P(11)=100-7/PX2
02800 20 P(12)=.3
02900 GO TO 23
03000
03100 11 P(4)=.3
03200 P(12)=.3
03300 DO 21 K=6,10,2
03400 21 P(K)=.6
03500 C SETS ALL AMPLS. TO .6 FOR STEADY STATE.
03600 C USES STEP NUMBERS ALREADY PRESENT
03700 P(7)=7/PX2
03800 P(9)=P(7)
03900 IF(X.EQ.12)GO TO 22
04000 GO TO 10
04100 END
04200
04300
04400
04500 C**** TYPICAL INPUT FOR 'SCORE'
04600
04700 TRTUN
04800 TEMPO/108*;
04900 TRPT ; DURATION WILL BE DEFINED IN P2
05000 P2 RHY/8/16//8/16 X 6/4/8//2/FINE*;
05100 P3 NOTES/G4///C5//D/C/B4/A/G/BF/A/D5/AF4*;
05200 P4 2000/P5 F1/P10 SUBR;
05300 P9 NUM/1 X 4/10/11//12/1//10/12/1/*;
05400 ;1=NOTE=ENV. 10=ATTACK NOTE, 11=STEADY, 12=DECAY
05500 P6 .5/P7 6/P8 P3/END;
05600
05700 ENV INV; USES 'INVISIBLE' FEATURE.
05800 P2 REP; REPEATS P2 OF TRPT
05900 P3 "SEG(F1);"/P7 1/P9 1/P11 1;
06000 P4 0/P5 1/P6 1/P8 .6/P10 .6;
06100 P13 SUBR 100; SEVERAL PARAMS ARE SET IN SUBR.
06200 END;
06300 RUN;
06400
06500 **** INST. DEFINITION ****
06600
06700 ARRAY F1,F2(512); <F1 WILL BE DEFINED BY SCORE.
06800 SYNTH(F2);1 1 999;
06900 COMPILE;
07000 INSTRUMENT TRPT;
07100 OSCIL(P4,MAG/P9,P5);<P9 IS DUR. OF ENV.
07200 INTRP(P6*P8*MAG,P7*P8*MAG,P5); <P6 AND P7 ARE MOD. INDEX 1 AND 2
07300 COSCIL(U2,P8*MAG,F2); <P8 IS MOD. FREQ.
07400 COSCIL(U1,P3*MAG+U3,F2);
07500 OUTA←OUTA+U4;END;
07600 FINISH;